home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib01.dsk / APPLE T.R.A.C..bas < prev    next >
BASIC Source File  |  2023-02-26  |  26KB  |  547 lines

  1. 2  REM  *************************
  2. 3  REM  ** APPLE T.R.A.C.      **
  3. 4  REM  ** MICRO-SPARC, INC.   **
  4. 5  REM  ** P.O. BOX 325        **
  5. 6  REM  ** LINCOLN MASS 01773  **
  6. 7  REM  ** COPYRIGHT (C) 1981  **
  7. 8  REM  *************************
  8. 9  GOTO 10000: REM  ** HEADER ROUTINE **
  9. 10  REM  ';' PRINTING
  10. 11  PRINT  SPC( PK -SY)V$;
  11. 12 SY = SY +(PK -SY) + LEN(V$)
  12. 13  RETURN 
  13. 15  REM  END OF LINE PRINTING
  14. 16  PRINT  SPC( PK -SY)V$
  15. 17 PK = 0:SY = 0
  16. 18  RETURN 
  17. 22 M = R: REM  ** SORT ROUTINE **
  18. 23 M =  INT(M/2): IF M = 0  THEN 95
  19. 24 J = 1:K = R -M
  20. 25 H = J
  21. 30 V = H +M
  22. 40  IF WK(H,SR) <WK(V,SR)  THEN 87
  23. 50  FOR F = 1 TO 5
  24. 55 TK = WK(H,F):WK(H,F) = WK(V,F):WK(V,F) = TK
  25. 70  NEXT 
  26. 72 T$ = W$(H,6):W$(H,6) = W$(V,6):W$(V,6) = T$
  27. 75 H = H -M
  28. 80  IF H <1  THEN 87
  29. 85  GOTO 30
  30. 87 J = J +1
  31. 89  IF J >K  THEN 23
  32. 91  GOTO 25
  33. 95  FLASH : PRINT "SORT COMPLETED": NORMAL 
  34. 97  RETURN 
  35. 100  REM  ** WRITE ACCOUNTS ON SCREEN **
  36. 105  HOME : HTAB 8: INVERSE : PRINT "* ADD ";F$;" RECORDS *": NORMAL 
  37. 110  FOR N = 1 TO 12: PRINT N$(N);
  38. 120  HTAB 20: PRINT N$(N +12)
  39. 130  NEXT N
  40. 135  PRINT 
  41. 140  IF FL = 1  THEN  INVERSE : PRINT "1=MC   2=VSA   3=AMEX   4=GAS   5=OTHER"
  42. 142  IF FL = 2  THEN  INVERSE : PRINT "ENTER CHECK# 999 FOR CASH ENTRY"
  43. 145  PRINT "TYPE ACCOUNT#, 'REDO', 'EDIT' OR 'END'": NORMAL 
  44. 150  PRINT 
  45. 160  POKE 34, PEEK(37): RETURN 
  46. 175  RETURN 
  47. 200  REM  ** INPUT DATA **
  48. 202  GOSUB 100
  49. 203 I = I +1: NORMAL 
  50. 204  VTAB 19: CALL  -868: PRINT "REC #";I
  51. 205  VTAB 20: CALL  -868: INVERSE : INPUT "ACCOUNT #";W$(I,1)
  52. 207  GOSUB 270
  53. 210  IF W$(I,1) = "END"  THEN  NORMAL :I = I -1: RETURN 
  54. 214  IF W$(I,1) = "REDO"  THEN I = I -1:I = I +(I = 0): GOTO 204
  55. 215  IF W$(I,1) = "REDO"  THEN I = I -1:I = I +(I = 0): GOTO 204
  56. 217  IF W$(I,1) = "EDIT"  THEN IS = I: INPUT "RECORD # TO EDIT?";I:W$(IS,1) = "": GOTO 204
  57. 220 W =  VAL(W$(I,1)): IF W >24  OR W <1  THEN  GOSUB 280: GOTO 205
  58. 225  VTAB 21: CALL  -868: PRINT F$;: INPUT "";W$(I,2)
  59. 226  GOSUB 270
  60. 227 W =  VAL(W$(I,2)): IF FL = 1  AND (W <1  OR W >5)  THEN  GOSUB 280: GOTO 225
  61. 230  VTAB 21: HTAB 25: CALL  -868: INPUT "MONTH,DAY:";W$(I,3),W$(I,4)
  62. 231  GOSUB 270
  63. 232 WM =  VAL(W$(I,3)):WD =  VAL(W$(I,4)): IF WM >12  OR WD >31  THEN  GOSUB 280: GOTO 230
  64. 235  VTAB 22: CALL  -868: PRINT "PAID TO: ";: NORMAL : PRINT "--------------";: HTAB 10: INPUT "";W$(I,6): INVERSE 
  65. 236  GOSUB 270: IF W$(I,6) = ""  THEN W$(I,6) = " "
  66. 237  IF  LEN(W$(I,6)) >14  THEN  VTAB 23: PRINT "MAX 14 CHARS ALLOWED..PLEASE REENTER": GOTO 235
  67. 240  VTAB 22: HTAB 25: CALL  -868: INPUT "AMOUNT:";W$(I,5)
  68. 241  GOSUB 270: IF  LEN(W$(I,5)) = 0  THEN  PRINT "": GOTO 240
  69. 242  IF  ASC(W$(I,5)) <48  OR  ASC(W$(I,5)) >57  THEN  VTAB 23: PRINT "NOT A NUMBER..PLEASE REENTER": GOTO 240
  70. 250  HOME : PRINT "LAST ACCT#";W$(I,1);" CD#";W$(I,2);" DT ";W$(I,3);"/";W$(I,4);" AMT $";W$(I,5)
  71. 254  IF IS >0  THEN X = I: GOSUB 1050:I = IS:IS = 0: GOTO 204
  72. 255  GOTO 203
  73. 270  VTAB 23: CALL  -868: RETURN 
  74. 280  VTAB 23: PRINT "INVALID ENTRY.. PLEASE REENTER": RETURN 
  75. 800  REM  ** PRINT SUMMARY **
  76. 801 YY = T:T = YY *(XX < >0)
  77. 805  PRINT D$;"PR#1"
  78. 807  PRINT  CHR$(9);"100N"
  79. 810  PRINT  CHR$(2); CHR$(30)
  80. 820  PRINT  TAB( 25)F$;" SUMMARY REPORT"
  81. 825  PRINT  TAB( 27)"TODAY'S DATE ";MT;"/";D;"/";Y
  82. 827  IF OM = 3  THEN  PRINT  TAB( 27)"SORTED ";A$
  83. 828 FF$ =  RIGHT$(F$,7)
  84. 830  PRINT :PK = 1:V$ = "SEQ": GOSUB 10:PK = 12:V$ = "** PAID TO **": GOSUB 10:PK = 28:V$ = "ACC": GOSUB 10:PK = 36:V$ = FF$: GOSUB 10:PK = 44:V$ = "MO": GOSUB 10:PK = 50:V$ = "DAY": GOSUB 10
  85. 832 PK = 56:V$ = "AMOUNT": GOSUB 15
  86. 835  FOR X = 1 TO 70: PRINT "=";: NEXT X: PRINT 
  87. 840  FOR X = 1 TO I
  88. 845 PK = 1:V$ =  STR$(X): GOSUB 10
  89. 850 PK = 9:V$ = W$(X,6): GOSUB 10
  90. 855 PK = (31 - LEN(W$(X,1))):V$ = W$(X,1): GOSUB 10
  91. 860 PK = (41 - LEN(W$(X,2))):V$ = W$(X,2): GOSUB 10
  92. 865 PK = (46 - LEN(W$(X,3))):V$ = W$(X,3): GOSUB 10
  93. 870 PK = (52 - LEN(W$(X,4))):V$ = W$(X,4): GOSUB 10
  94. 875 W =  VAL(W$(X,5))
  95. 876 T = T +W: IF FL = 1  THEN CC =  VAL(W$(X,2)):CC(CC) = CC(CC) +W: REM  ** GRAND TOTAL AND CR CD TOTALS"
  96. 877 T =  INT(T *100 +.5)/100:CC(CC) =  INT(CC(CC) *100 +.5)/100
  97. 880 P = W: GOSUB 980
  98. 885 V$ =  STR$(W):PK = (52 +B -C -1): GOSUB 15
  99. 890  NEXT X
  100. 892  FOR X = 1 TO 70: PRINT "-";: NEXT X: PRINT 
  101. 895 P = T: GOSUB 980
  102. 900 PK = 1:V$ = " *** TOTAL ***": GOSUB 10:PK = (52 +B -C -1):V$ =  STR$(T): GOSUB 15
  103. 905  IF FL < >1  THEN 990: REM  ** SKIP CR CD SUMMARY **
  104. 907  PRINT : PRINT 
  105. 910  FOR X = 1 TO 5:P = CC(X): GOSUB 980: PRINT CD$(X);:V$ =  STR$(CC(X)):PK = (15 +B -C -1): GOSUB 15: NEXT 
  106. 960  GOTO 990
  107. 980 B = 9:C = (P > = 10) +(P > = 100) +(P > = 1000) +(P > = 10000): RETURN 
  108. 990  PRINT  CHR$(9);"40N": REM  CTRL I 40N
  109. 995  PRINT D$;"PR#0"
  110. 998  IF SW = 1  THEN  RETURN 
  111. 999  TEXT : CLEAR :BU = 1: GOTO 10002: REM  ** RETURN TO MENU **
  112. 1000  REM  ** ADD TO CURRENT FILE **
  113. 1005  ONERR  GOTO 1950
  114. 1010  PRINT D$;"OPEN";F$;",L40"
  115. 1020  PRINT D$;"READ";F$;",R0"
  116. 1025  INPUT R
  117. 1035  PRINT D$;"CLOSE";F$
  118. 1040 I = R: GOSUB 200: REM  **INPUT**
  119. 1045  TEXT 
  120. 1050  PRINT D$;"OPEN";F$;",L40"
  121. 1052  IF IS >0  THEN 1080: REM  DIRECT EDIT
  122. 1060  PRINT D$;"WRITE";F$;",R0"
  123. 1065  PRINT I
  124. 1070  FOR X = R +1 TO I
  125. 1080  PRINT D$;"WRITE";F$;",R";X
  126. 1085  PRINT W$(X,1): PRINT W$(X,2): PRINT W$(X,3): PRINT W$(X,4): PRINT W$(X,5): PRINT W$(X,6)
  127. 1087  IF IS >0  THEN 1095
  128. 1090  NEXT X
  129. 1095  PRINT D$;"CLOSE";F$
  130. 1097  IF IS >0  THEN  RETURN 
  131. 1100  IF SW = 1  THEN  RETURN 
  132. 1105 BU = 1: GOTO 10500: REM  ** RETURN TO MAIN MENU
  133. 1950 ER =  PEEK(222): POKE 216,0: IF ER < >5  THEN 1998
  134. 1955  PRINT D$;"CLOSE";F$
  135. 1956  PRINT D$;"OPEN";F$
  136. 1957  PRINT D$;"WRITE";F$;",R0"
  137. 1958  PRINT 0
  138. 1959  PRINT D$;"CLOSE";F$
  139. 1960 R = 0: GOTO 1040
  140. 1998  PRINT "CHECK APPLESOFT MANUAL PG. 136 FOR ERR": PRINT "THE ERROR IS #"; PEEK(222): PRINT "LOCATED IN LINE #"; PEEK(218) + PEEK(219) *256
  141. 1999  END 
  142. 2000  REM  ** DELETE RECORDS **
  143. 2001 Z = 0
  144. 2005  HOME : VTAB 10: FLASH : PRINT "READING ";F$;" FILE": NORMAL 
  145. 2010  PRINT D$;"OPEN";F$;",L40"
  146. 2020  PRINT D$;"READ";F$;",R0"
  147. 2025  INPUT R
  148. 2027  IF R = 0  THEN  INVERSE : PRINT " NO RECORDS STORED IN ";F$: NORMAL :BZ = 1: GOTO 2050
  149. 2030  FOR X = 1 TO R
  150. 2035  PRINT D$;"READ";F$;",R";X
  151. 2040  INPUT W$(X,1),W$(X,2),W$(X,3),W$(X,4),W$(X,5),W$(X,6)
  152. 2045  NEXT X
  153. 2050  PRINT D$;"CLOSE";F$
  154. 2055  IF SW = 1  THEN  RETURN 
  155. 2056  ONERR  GOTO 2060
  156. 2057  PRINT D$;"OPEN POSTED ";F$;",L40"
  157. 2058  PRINT D$;"READ POSTED ";F$;",R0"
  158. 2059  INPUT R2: GOTO 2065
  159. 2060 ER =  PEEK(222): POKE 216,0: IF ER < >5  THEN 1998
  160. 2061  PRINT D$;"CLOSE POSTED ";F$
  161. 2062  PRINT D$;"OPEN POSTED ";F$;",L40"
  162. 2063  PRINT D$;"WRITE POSTED ";F$;",R0"
  163. 2064  PRINT 0:R2 = 0
  164. 2065  PRINT D$
  165. 2066  HOME : HTAB 8: PRINT "* POST ";F$;" RECORDS *"
  166. 2067  PRINT : PRINT "POSTING A RECORD WILL:": PRINT : PRINT "   - DELETE RECORD FROM ";F$;" FILE"
  167. 2068  PRINT "   - ADD AMOUNT TO Y-T-D BALANCES"
  168. 2069  PRINT "   - WRITE RECORD TO POSTED ";F$;" FILE": PRINT : PRINT 
  169. 2070  VTAB 15: PRINT "WHICH RECORD # DO YOU WANT TO POST?"
  170. 2071  VTAB 16: CALL  -868: INVERSE : INPUT "ENTER RECORD # OR TYPE 'END': ";DL$
  171. 2072  IF DL$ = "END"  THEN  NORMAL : GOTO 2085
  172. 2073 DL =  VAL(DL$):DL$ = "": IF DL >R  THEN  VTAB 18: PRINT "NO SUCH RECORD. HIGHEST RECORD IS ";R: GOTO 2070
  173. 2074  IF W$(DL,1) = " "  AND W$(DL,2) = " "  THEN  VTAB 18: PRINT "RECORD ALREADY POSTED": GOTO 2070
  174. 2075  VTAB 18: CALL  -868: PRINT "DELETED: ";W$(DL,6);"   $";W$(DL,5)
  175. 2076 R2 = R2 +1
  176. 2077  PRINT D$;"WRITE POSTED ";F$;",R";R2
  177. 2078  PRINT W$(DL,1): PRINT W$(DL,2): PRINT W$(DL,3): PRINT W$(DL,4): PRINT W$(DL,5): PRINT W$(DL,6)
  178. 2079  PRINT D$
  179. 2080 Z = Z +1: FOR X = 1 TO 5:W(Z,X) =  VAL(W$(DL,X)): NEXT X: REM  ** TRANSFER TO WORK AREA **
  180. 2081 W$(DL,1) = " ":W$(DL,2) = " ": REM  ** FLAG FOR LATER COMPRESSING **
  181. 2083  GOTO 2071
  182. 2085  REM  ** COMPRESS FILE **
  183. 2087 N = 0:S = 0
  184. 2088 S = S +1
  185. 2090 N = N +1
  186. 2094  IF N >R  THEN 2205
  187. 2095  IF W$(N,1) = " "  AND W$(N,2) = " "  THEN 2090
  188. 2200  FOR X = 1 TO 6:W$(S,X) = W$(N,X): NEXT X
  189. 2202  GOTO 2088
  190. 2205  REM  ** WRITE COMPRESSED FILE TO DISK **
  191. 2210 I = S -1:R = 0:SW = 1: GOSUB 1050:SW = 0
  192. 2220  REM  CLOSE POSTED RECORD FILE
  193. 2224  PRINT D$;"WRITE POSTED ";F$;",R0"
  194. 2226  PRINT R2
  195. 2228  PRINT D$;"CLOSE POSTED ";F$
  196. 2250  REM  ** READ YTD BALANCES **
  197. 2255  ONERR  GOTO 2500
  198. 2257  TEXT : HOME : VTAB 10: FLASH : PRINT "READING YEAR-TO-DATE FILES": NORMAL 
  199. 2260  PRINT D$;"OPEN BALANCES"
  200. 2265  PRINT D$;"READ BALANCES"
  201. 2270  FOR X = 1 TO 24: FOR N = 1 TO 12
  202. 2275  INPUT BAL(X,N)
  203. 2280  NEXT N,X
  204. 2285  PRINT D$;"CLOSE BALANCES"
  205. 2290  IF SW = 1  THEN  RETURN 
  206. 2300  REM  ** UPDATE YTD BALANCES **
  207. 2305  FOR X = 1 TO Z:BAL(W(X,1),W(X,3)) = BAL(W(X,1),W(X,3)) +W(X,5)
  208. 2310  NEXT X
  209. 2320  PRINT D$;"OPEN BALANCES"
  210. 2325  PRINT D$;"WRITE BALANCES"
  211. 2330  FOR X = 1 TO 24: FOR N = 1 TO 12
  212. 2335  PRINT BAL(X,N)
  213. 2340  NEXT N,X
  214. 2345  PRINT D$;"CLOSE BALANCES"
  215. 2400  REM  LIST FILE SUMMARY AFTER POSTING
  216. 2410  IF PRTYPE = 1  THEN  GOSUB 5100
  217. 2420  IF PRTYPE = 2  THEN SW = 1: GOSUB 800:SW = 0
  218. 2435  GOTO 10500: REM  RETURN TO MAIN MENU
  219. 2500  REM  ** INITIAL RECORD **
  220. 2505 ER =  PEEK(222): POKE 216,0: IF ER < >5  THEN 1998
  221. 2510  PRINT D$;"CLOSE BALANCES"
  222. 2511  PRINT D$;"OPENBALANCES"
  223. 2512  PRINT D$;"WRITEBALANCES,R0"
  224. 2513  PRINT 0
  225. 2514  PRINT D$;"CLOSEBALANCES"
  226. 2515  GOTO 2300
  227. 3000  REM  ** SORT SETUP **
  228. 3001 H = 0:K = 0:J = 0:V = 0:R = 0:CM = 0:F = 0: REM  SORT VARIABLES
  229. 3002  FLASH : PRINT "INITIALIZING SORT TABLE": NORMAL 
  230. 3003  FOR X = 0 TO 150: FOR YY = 0 TO 5:WK(X,YY) = 0: NEXT : NEXT 
  231. 3005 SW = 1: GOSUB 2000:SW = 0: REM  ** READ FILE **
  232. 3010  CALL  -936: HTAB 8: PRINT "* SORT ";F$;" RECORDS *"
  233. 3015  PRINT : PRINT "WHICH FIELD DO YOU WANT TO SORT ON?"
  234. 3020  HTAB 10: PRINT "1 = ACCOUNT NUMBER": HTAB 10: PRINT "2 = CR CARD/CHECK NUMBER": HTAB 10: PRINT "3 = MONTH": HTAB 10: PRINT "4 = DOLLAR AMOUNT"
  235. 3025  PRINT : INVERSE : INPUT "ENTER YOUR SELECTION: ";SR: NORMAL 
  236. 3026  IF SR = 1  THEN A$ = "BY ACCOUNT NUMBER"
  237. 3027  IF SR = 2  THEN A$ = "BY CARD/CHECK NUMBER"
  238. 3028  IF SR = 3  THEN A$ = "BY MONTH"
  239. 3029  IF SR = 4  THEN A$ = "BY DOLLAR AMOUNT":SR = 5
  240. 3030  IF SR >5  THEN 3010
  241. 3032  FOR X = 1 TO R: FOR N = 1 TO 5:WK(X,N) =  VAL(W$(X,N)): NEXT N,X: REM  ** CONVERT STRINGS TO DIGITS **
  242. 3035  FLASH : PRINT "SORT IN PROGRESS": NORMAL : GOSUB 22
  243. 3040  FOR X = 1 TO R: FOR N = 1 TO 5:W$(X,N) =  STR$(WK(X,N)): NEXT N,X
  244. 3042 X$ = "":I = R: PRINT "PRINT SORTED LIST ON PRINTER? ": INVERSE : INPUT "ENTER 'Y' OR 'N' :";X$: NORMAL 
  245. 3043  IF X$ = "Y"  AND PRTYPE = 1  THEN  GOSUB 5100
  246. 3044  IF X$ = "Y"  AND PRTYPE = 2  THEN SW = 1: GOSUB 800:SW = 0
  247. 3047 R = 0
  248. 3050  PRINT "SAVE SORTED LIST ON THE DISK?": INVERSE : INPUT "ENTER 'Y' OR 'N' :";X$: NORMAL : IF X$ = "Y"  THEN SW = 1: GOSUB 1050:SW = 0
  249. 3051  GOSUB 270
  250. 3052  IF X$ = "Y"  OR X$ = "N"  THEN 3055
  251. 3053  GOSUB 280: GOTO 3050
  252. 3055  GOTO 10500: REM   * RETURN TO MAIN MENU
  253. 4000  REM   ** REPORT OPTIONS ** 
  254. 4002  TEXT : HOME 
  255. 4010  HTAB 12: PRINT "** REPORT OPTIONS **"
  256. 4015  PRINT : PRINT "1 = LIST AND TOTAL CREDIT CARD FILE"
  257. 4020  PRINT "2 = LIST AND TOTAL CHECK FILE"
  258. 4025  PRINT "3 = TREND ANALYSIS & AVERAGE MONTH"
  259. 4030  PRINT "4 = YEAR TO DATE SPENDING PROFILE"
  260. 4040  PRINT "5 = HI-RES SPENDING GRAPH"
  261. 4045  PRINT "6 = LIST POSTED CREDIT CARD FILE"
  262. 4047  PRINT "7 = LIST POSTED CHECK FILE"
  263. 4050  VTAB 15: INVERSE : INPUT "ENTER SELECTION :";RP: NORMAL 
  264. 4055  GOSUB 270
  265. 4060  IF RP = 1  THEN FL = 1:F$ = "CARD #": GOTO 4100
  266. 4062  IF RP = 2  THEN FL = 2:F$ = "CHECK #": GOTO 4100
  267. 4064  IF RP = 3  THEN  GOTO 4200
  268. 4066  IF RP = 4  THEN  GOTO 4300
  269. 4068  IF RP = 6  THEN FL = 1:F$ = "POSTED CARD #": GOTO 5700
  270. 4070  IF RP = 7  THEN FL = 2:F$ = "POSTED CHECK #": GOTO 5700
  271. 4075  IF RP < >5  THEN  GOSUB 280: GOTO 4050
  272. 4080  PRINT D$;"RUN TRAC GRAPH ROUTINE"
  273. 4100  REM  ** LIST FILE **
  274. 4103 T = 0: FOR X = 0 TO 5:CC(X) = 0: NEXT X: REM  INIT RPT VARIABLES
  275. 4105 SW = 1: GOSUB 2000:SW = 0: REM  ** READ FILE **
  276. 4110 I = R: IF I = 0  THEN  VTAB 24: INVERSE : PRINT "NO RECORDS IN ";F$: NORMAL : FOR X = 1 TO 1000: NEXT X: GOTO 4130
  277. 4115  IF PRTYPE = 1  THEN  GOSUB 5100
  278. 4120  IF PRTYPE = 2  THEN SW = 1: GOSUB 800:SW = 0
  279. 4130  GOTO 10500: REM  RETURN TO MAIN MENU
  280. 4200  REM  ** TREND ANALYSIS **
  281. 4201 TA = 0:AV(0) = 0:TL(0) = 0: FOR X = 1 TO 12:TL(X) = 0:AV(X) = 0:AV(X +12) = 0: NEXT X: REM  INIT RPT VAR
  282. 4202 SW = 1: GOSUB 2250: REM  ** READ YTD FILE **
  283. 4204 F$ = "CARD #": GOSUB 2000: REM  ** READ CARD FILE **
  284. 4205  IF BZ = 1  THEN BZ = 0: GOTO 4208
  285. 4206  GOSUB 4390: REM  ** ADD CR CDS TO BALANCES **
  286. 4208 F$ = "CHECK #": GOSUB 2000: REM  ** READ CHECK FILE **
  287. 4209  IF BZ = 1  THEN BZ = 0: GOTO 4212
  288. 4210  GOSUB 4390: REM  ** ADD CHECKS TO BALANCES **
  289. 4212 SW = 0: REM  ** SHUT OFF SWITCH **
  290. 4215  FOR X = 1 TO 24: FOR N = 1 TO MT:AV(X) = AV(X) +BAL(X,N):TL(N) = TL(N) +BAL(X,N):BAL(X,N) =  INT(BAL(X,N) *100 +.5)/100: NEXT N,X: REM  *CROSSFOOT & SUM*
  291. 4216  FOR X = 1 TO 24:AV(X) = AV(X)/MT:AV(X) =  INT(AV(X) *100 +.5)/100:TA = TA +AV(X): IF TL(MT) >0  THEN PC(X,1) =  INT((BAL(X,MT) *100)/TL(MT))
  292. 4217  IF TL(MT -1) >0  THEN PC(X,2) =  INT((BAL(X,MT -1) *100)/TL(MT -1))
  293. 4218  NEXT X
  294. 4219  FOR X = 1 TO 24: IF TA >0  THEN PC(X,3) =  INT((AV(X) *100)/TA)
  295. 4220 NM$(X) = N$(X): NEXT X
  296. 4221  IF PRTYPE = 1  THEN  GOTO 5200
  297. 4222  PRINT D$;"PR#1"
  298. 4223  PRINT  CHR$(9);"90N"
  299. 4224  IF PQ = 1  THEN  PRINT  CHR$(2); CHR$(30)
  300. 4228  POKE 36,24: PRINT "TREND ANALYSIS FOR THE MONTH OF ** ";MO$(MT);" **": PRINT 
  301. 4229 XM = 4:XP = 2
  302. 4230  PRINT "ACCOUNT DESCR'";: PRINT  TAB( 8)"CURR MO";: PRINT  TAB( XP)"% TOT";: PRINT  TAB( XM)"LAST MO";: PRINT  TAB( XP)"% TOT";: PRINT  TAB( XM)"AVG MO";: PRINT  TAB( XP)"% TOT";
  303. 4232  PRINT  TAB( XM)"CUR VS. AVG"
  304. 4234  FOR X = 1 TO 80: PRINT "=";: NEXT X: PRINT 
  305. 4236  FOR X = 1 TO 24
  306. 4238 PK = 1:V$ = NM$(X): GOSUB 10:
  307. 4239  IF BAL(X,MT) = 0  THEN 4247
  308. 4240 P = BAL(X,MT): GOSUB 4295:B = 5
  309. 4242 V$ =  STR$(BAL(X,MT)):PK = (20 +B -C -1): GOSUB 10
  310. 4244 P = PC(X,1): GOSUB 4295:B = 3
  311. 4246 V$ =  STR$(PC(X,1)) +"%":PK = (30 +B -C -1): GOSUB 10
  312. 4247  IF BAL(X,MT -1) = 0  THEN 4255
  313. 4248 P = BAL(X,MT -1): GOSUB 4295:B = 5
  314. 4250 V$ =  STR$(BAL(X,MT -1)):PK = (36 +B -C -1): GOSUB 10
  315. 4252 P = PC(X,2): GOSUB 4295:B = 3
  316. 4254 V$ =  STR$(PC(X,2)) +"%":PK = (46 +B -C -1): GOSUB 10
  317. 4255  IF AV(X) = 0  THEN  PRINT : GOTO 4270
  318. 4256 P = AV(X): GOSUB 4295:B = 5
  319. 4258 V$ =  STR$(AV(X)):PK = (51 +B -C -1): GOSUB 10
  320. 4260 P = PC(X,3): GOSUB 4295:B = 3
  321. 4262 V$ =  STR$(PC(X,3)) +"%":PK = (61 +B -C -1): GOSUB 10
  322. 4264  IF BAL(X,MT) >AV(X)  THEN X$ = "ABOVE AVG"
  323. 4266  IF BAL(X,MT) <AV(X)  THEN X$ = "BELOW AVG"
  324. 4268  IF BAL(X,MT) = AV(X)  THEN X$ = "EQUALS AVG"
  325. 4269 V$ = X$:PK = 70: GOSUB 15
  326. 4270 PK = 0:SY = 0: NEXT X
  327. 4272  FOR X = 1 TO 80: PRINT "-";: NEXT X: PRINT 
  328. 4274 PK = 1:V$ = "** TOTALS **": GOSUB 10
  329. 4276 P = TL(MT): GOSUB 4295:B = 5:V$ =  STR$(TL(MT)):PK = 20 +B -C -1: GOSUB 10
  330. 4278 P = TL(MT -1): GOSUB 4295:B = 5:V$ =  STR$(TL(MT -1)):PK = 36 +B -C -1: GOSUB 10
  331. 4280 P = TA: GOSUB 4295:B = 5:V$ =  STR$(TA):PK = 51 +B -C -1: GOSUB 15
  332. 4294  GOTO 4395: REM  SHUT OFF PRINTER
  333. 4295 C = (P > = 10) +(P > = 100) +(P > = 1000) +(P > = 10000): RETURN 
  334. 4300  REM  ** YEAR TO DATE SPENDING **
  335. 4302  FOR X = 1 TO 12:TL(X) = 0: NEXT X: REM  INIT RPT VAR
  336. 4305 SW = 1: GOSUB 2250: REM  ** READ YTD FILE **
  337. 4310 F$ = "CARD #": GOSUB 2000: REM  ** READ CARD FILE **
  338. 4313  REM  ** ADD CURRENT CARDS TO BALANCE **
  339. 4314  IF BZ = 1  THEN BZ = 0: GOTO 4325
  340. 4315  GOSUB 4390
  341. 4325 F$ = "CHECK #": GOSUB 2000: REM  ** READ CHECK FILE"
  342. 4326  IF BZ = 1  THEN BZ = 0: GOTO 4332
  343. 4330  GOSUB 4390
  344. 4332 SW = 0: REM  ** SHUT OFF SWITCH **
  345. 4333  IF PRTYPE = 1  THEN 5500
  346. 4335  PRINT D$;"PR#1"
  347. 4336  PRINT  CHR$(9);"130N"
  348. 4337  IF PQ = 1  THEN  PRINT  CHR$(2); CHR$(31)
  349. 4338  IF PQ = 2  THEN  PRINT  CHR$(27); CHR$(20)
  350. 4339  IF PQ = 3  THEN  PRINT  CHR$(15)
  351. 4340 PK = 30:V$ = "YEAR-TO-DATE SPENDING ANALYSIS": GOSUB 15:PK = 35:V$ = "TODAY'S DATE: " + STR$(MT) +"/" + STR$(D) +"/" + STR$(Y): GOSUB 15
  352. 4344 XN = 7:XJ = 10
  353. 4346  PRINT  TAB( 1)"EXPENSE DESCR'";: PRINT  TAB( XJ)MO$(1);: PRINT  TAB( XN)MO$(2);: PRINT  TAB( XN)MO$(3);: PRINT  TAB( XN)MO$(4);: PRINT  TAB( XN)MO$(5);: PRINT  TAB( XN)MO$(6);
  354. 4348  PRINT  TAB( XN)MO$(7);: PRINT  TAB( XN)MO$(8);: PRINT  TAB( XN)MO$(9);: PRINT  TAB( XN)MO$(10);: PRINT  TAB( XN)MO$(11);: PRINT  TAB( XN)MO$(12)
  355. 4350  FOR X = 1 TO 130: PRINT "=";: NEXT X
  356. 4351  PRINT :L = 0
  357. 4352  FOR X = 1 TO 24:NM$(X) = N$(X): NEXT X
  358. 4354  FOR X = 1 TO 24:PK = 1:V$ = NM$(X): GOSUB 10
  359. 4356  FOR N = 1 TO 12: IF BAL(X,N) = 0  THEN 4362
  360. 4358 P = BAL(X,N): GOSUB 4295
  361. 4360 B = 14:PK = ((N *9) +B -C -1):V$ =  STR$(BAL(X,N)): GOSUB 10
  362. 4361 TL(N) = TL(N) +BAL(X,N)
  363. 4362  NEXT N:PK = 0:SY = 0: PRINT 
  364. 4364  NEXT X
  365. 4366  FOR X = 1 TO 130: PRINT "-";: NEXT X: PRINT 
  366. 4368 PK = 1:V$ = "** TOTALS ** ": GOSUB 10
  367. 4370  FOR X = 1 TO 12
  368. 4372 P = TL(X): GOSUB 4295
  369. 4374 B = 14:PK = ((X *9) +B -C -1):V$ =  STR$(TL(X)): GOSUB 10
  370. 4376  NEXT X: PRINT 
  371. 4389  GOTO 4395
  372. 4390  FOR X = 1 TO R:WK(X,1) =  VAL(W$(X,1)):WK(X,2) =  VAL(W$(X,3)):WK(X,3) =  VAL(W$(X,5))
  373. 4392 BAL(WK(X,1),WK(X,2)) = BAL(WK(X,1),WK(X,2)) +WK(X,3): NEXT X: RETURN 
  374. 4393  IF PQ = 3  THEN  PRINT  CHR$(18)
  375. 4395  PRINT  CHR$(9);"40N"
  376. 4397  IF PQ = 2  THEN  PRINT  CHR$(27); CHR$(19)
  377. 4398  IF PQ = 3  THEN  PRINT  CHR$(18)
  378. 4399  PRINT D$;"PR#0"
  379. 4400  CLEAR :BU = 1: GOTO 10002: REM  ** RETURN TO MENU
  380. 5100 X = 0:YY = T:T = 0: IF XX  THEN T = YY
  381. 5102  FOR J = 1 TO 5:CC(J) = 0: NEXT 
  382. 5110  HOME : PRINT  TAB( 7);F$;" SUMMARY REPORT"
  383. 5115  IF OM = 3  THEN  PRINT  TAB( 7)"SORTED ";A$
  384. 5120  PRINT : PRINT "#  * PAID TO * A# ";
  385. 5125  IF FL = 1  THEN  PRINT "CARD# ";
  386. 5127  IF FL = 2  THEN  PRINT "CHECK#";
  387. 5130  PRINT " MO DY  AMOUNT": PRINT :CTR = 0
  388. 5132  POKE 34, PEEK(37) +1
  389. 5135 X = X +1: IF X >I  THEN  GOTO 5180
  390. 5140 CTR = CTR +1: IF CTR >16  THEN  VTAB 24: INVERSE : INPUT "HIT RETURN TO CONTINUE";X$: NORMAL : VTAB 5: CALL  -958:CTR = 1
  391. 5142  PRINT X;
  392. 5144  POKE 36,3: PRINT  LEFT$(W$(X,6),10);
  393. 5146  POKE 36,17 - LEN(W$(X,1)): PRINT W$(X,1);
  394. 5148  POKE 36,23 - LEN(W$(X,2)): PRINT W$(X,2);
  395. 5150  POKE 36,27 - LEN(W$(X,3)): PRINT W$(X,3);
  396. 5152  POKE 36,30 - LEN(W$(X,4)): PRINT W$(X,4);
  397. 5160 W =  VAL(W$(X,5))
  398. 5162 T = T +W: IF FL = 1  THEN CC =  VAL(W$(X,2)):CC(CC) = CC(CC) +W: REM  *GRAND TOTALS AND CR CD TOTALS
  399. 5164 T =  INT(T *100 +.5)/100:CC(CC) =  INT(CC(CC) *100 +.5)/100
  400. 5166 P = W: GOSUB 980
  401. 5168  POKE 36,27 +B -C -1: PRINT W
  402. 5170  GOTO 5135
  403. 5180  FOR X = 0 TO 38: PRINT "-";: NEXT X: PRINT 
  404. 5182 P = T: GOSUB 980
  405. 5184  POKE 36,1: PRINT "*** TOTALS ***";: POKE 36,26 +B -C: PRINT T
  406. 5186  IF FL < >1  THEN 5195: REM  SKIP CARD SUMMARY
  407. 5188  VTAB 24: INVERSE : INPUT "HIT RETURN FOR CARD TOTALS";X$: NORMAL 
  408. 5190  TEXT : HOME : HTAB 10: PRINT "* CARD TOTALS *"
  409. 5192  VTAB 4: FOR X = 1 TO 5:P = CC(X): GOSUB 980: PRINT CD$(X);: POKE 36,(15 +B -C -1): PRINT CC(X): NEXT X
  410. 5195  VTAB 24: INVERSE : INPUT "HIT RETURN TO CONTINUE";X$: NORMAL 
  411. 5199  TEXT : RETURN 
  412. 5200  HOME 
  413. 5205  POKE 36,4: PRINT "TREND ANALYSIS FOR ** ";MO$(MT);" **"
  414. 5210 XM = 4:XP = 2
  415. 5215  PRINT "DSCR";: POKE 36,9: PRINT "CUR MO";: POKE 36,18: PRINT "%";: POKE 36,21: PRINT "LST MO";: POKE 36,29: PRINT "%";: POKE 36,32: PRINT "AVG MO"
  416. 5220  FOR X = 0 TO 39: PRINT "=";: NEXT X: PRINT 
  417. 5225  FOR X = 1 TO 24
  418. 5230  PRINT  LEFT$(NM$(X),9);
  419. 5235  IF BAL(X,MT) = 0  THEN 5260
  420. 5240 P = BAL(X,MT): GOSUB 5340:B = 5
  421. 5245  POKE 36,8 +B -C -1: PRINT BAL(X,MT);
  422. 5250 P = PC(X,1): GOSUB 5340:B = 3
  423. 5255  POKE 36,(17 +B -C -1): PRINT PC(X,1);
  424. 5260  IF BAL(X,MT -1) = 0  THEN 5285
  425. 5265 P = BAL(X,MT -1): GOSUB 5340:B = 5
  426. 5270  POKE 36,(20 +B -C -1): PRINT BAL(X,MT -1);
  427. 5275 P = PC(X,2): GOSUB 5340:B = 3
  428. 5280  POKE 36,(28 +B -C -1): PRINT PC(X,2);
  429. 5285  IF AV(X) = 0  THEN  PRINT : GOTO 5305
  430. 5290 P = AV(X): GOSUB 5340:B = 5
  431. 5295  POKE 36,31 +B -C -1: PRINT AV(X)
  432. 5300 P = PC(X,3): GOSUB 5340:B = 3
  433. 5305  IF X = 18  THEN  INPUT "HIT RETURN FOR LAST PART OF REPORT ";XX$
  434. 5310  NEXT X
  435. 5315  PRINT "** TOTALS **";
  436. 5320 P = TL(MT): GOSUB 5340:B = 5: POKE 36,9 +B -C -1: PRINT TL(MT);
  437. 5325 P = TL(MT -1): GOSUB 5340:B = 5: POKE 36,21 +B -C -1: PRINT TL(MT -1);
  438. 5330 P = TA: GOSUB 5340:B = 5: POKE 36,32 +B -C -1: PRINT TA
  439. 5335  INPUT "PRESS RETURN TO GO TO MENU ";XX$: GOTO 5630
  440. 5340 C = (P > = 10) +(P > = 100) +(P > = 1000) +(P > = 10000): RETURN 
  441. 5500  REM  **YTD SPENDING-SCREEN VERSION
  442. 5545  HOME :ZT = 8
  443. 5550  POKE 36,5: PRINT "YEAR-TO-DATE SPENDING ANALYSIS": POKE 36,5: PRINT "TODAY'S DATE: ";MT;"/";D;"/";Y
  444. 5555  FOR N = 1 TO 12  STEP 3: PRINT "DESCR";
  445. 5560  FOR I = N TO N +2:ZT = ZT +9: POKE 36,ZT: PRINT MO$(I);: NEXT I: PRINT :ZT = 8
  446. 5565  FOR X = 1 TO 24: PRINT  LEFT$(N$(X),10);
  447. 5570  FOR I = N TO N +2:ZT = ZT +9:P = BAL(X,I): GOSUB 5340
  448. 5575  POKE 36,ZT -C -1: PRINT BAL(X,I);:TL(I) = TL(I) +BAL(X,I): NEXT I: PRINT :ZT = 8
  449. 5580  IF X = 18  THEN  INPUT "PRESS RETURN FOR REST OF REPORT";XX$
  450. 5585  NEXT X
  451. 5590  FOR YY = 0 TO 39: PRINT "-";: NEXT YY: PRINT 
  452. 5595  PRINT "**TOTALS**";:ZT = 8: FOR I = N TO N +2:ZT = ZT +9:P = TL(I): GOSUB 5340: POKE 36,ZT -C -1: PRINT TL(I);: NEXT I: PRINT :ZT = 8
  453. 5600  INPUT "PRESS RETURN FOR NEXT 3 MONTHS";XX$
  454. 5605  NEXT N
  455. 5610  INPUT "PRESS RETURN TO GO TO MENU";XX$
  456. 5615  GOTO 5630
  457. 5620  FOR X = 1 TO R:WK(X,1) =  VAL(W$(X,1)):WK(X,2) =  VAL(W$(X,3)):WK(X,3) =  VAL(W$(X,5))
  458. 5625 BAL(WK(X,1),WK(X,2)) = BAL(WK(X,1),WK(X,2)) +WK(X,3): NEXT X: RETURN 
  459. 5630  GOTO 10500: REM  RETURN TO MENU
  460. 5700  REM  *LIST POSTED CARD/CHECK FILES
  461. 5701 T = 0:E1 = 0: FOR X = 0 TO 5:CC(X) = 0: NEXT X: REM  INIT VARIABLES
  462. 5705  ONERR  GOTO 5790
  463. 5710  PRINT D$;"OPEN ";F$;",L40"
  464. 5715  PRINT D$;"READ ";F$;",R0"
  465. 5720  INPUT R
  466. 5730  IF R = 0  THEN  GOTO 5792
  467. 5740  REM  ** PRINT RECORD 100 AT TIME
  468. 5742 XX = 0
  469. 5745  FLASH : PRINT "READ 100 RECORDS OF ";F$: NORMAL 
  470. 5750 B1 = E1 +1: IF (R -E1) >100  THEN E1 = E1 +100:I = 100: GOTO 5760
  471. 5755  IF (R -E1) < = 100  THEN I = (R -E1):E1 = R
  472. 5760  FOR Z = B1 TO E1:XX = XX +1
  473. 5765  PRINT D$;"READ ";F$;",R";Z
  474. 5770  INPUT W$(XX,1),W$(XX,2),W$(XX,3),W$(XX,4),W$(XX,5),W$(XX,6)
  475. 5774  NEXT 
  476. 5775  PRINT D$: IF PRTYPE = 1  THEN SW = 1: GOSUB 5100:SW = 0
  477. 5776  IF PRTYPE = 2  THEN SW = 1: GOSUB 800:SW = 0
  478. 5780  IF E1 <R  THEN  GOTO 5740
  479. 5785  GOTO 5792: REM  CLOSE FILE
  480. 5790 ER =  PEEK(222): POKE 216,0: IF ER < >5  THEN 1998
  481. 5792  PRINT D$;"CLOSE ";F$
  482. 5794  PRINT D$: IF E1 = 0  THEN  INVERSE : PRINT "NO RECORDS IN ";F$: NORMAL : FOR X = 1 TO 1000: NEXT X
  483. 5799 XX = 0: GOTO 10500: REM  RETURN TO MAIN MENU
  484. 10000  REM  * DISPLAY INTRODUCTION SCREEN
  485. 10002  TEXT : HOME 
  486. 10003 XL =  PEEK(54):XH =  PEEK(55)
  487. 10005  HTAB 7: PRINT "HOME FINANCE MANAGEMENT"
  488. 10010  FOR I = 0 TO 39: PRINT "=";: NEXT I
  489. 10015  PRINT "THIS IS YOUR PERSONAL SYSTEM FOR MANAG-": PRINT "ING CREDIT CARDS, CHECKS AND OVERALL": PRINT "HOME FINANCES."
  490. 10020  PRINT : PRINT "YOU'LL BE ASKED TO SELECT FROM THESE ": PRINT "OPTIONS:"
  491. 10025  HTAB 10: PRINT "ADD": HTAB 10: PRINT "POST": HTAB 10: PRINT "SORT": HTAB 10: PRINT "REPORT": HTAB 10: PRINT "END THE SESSION"
  492. 10030  PRINT : PRINT "TRAC WILL MAINTAIN YOUR EXPENSE DATA": PRINT "IN THE FOLLOWING FILES:"
  493. 10040  PRINT : HTAB 10: PRINT "CREDIT CARD FILE": HTAB 10: PRINT "CHECK FILE": HTAB 10: PRINT "YEAR-TO-DATE FILE"
  494. 10050  HTAB 10: PRINT "POSTED CREDIT CARD FILE": HTAB 10: PRINT "POSTED CHECK FILE"
  495. 10060  VTAB 24: INVERSE : INPUT "HIT RETURN TO CONTINUE ";X$: NORMAL 
  496. 10100  HOME : POKE 33,37: POKE 32,3
  497. 10110  PRINT : HTAB 13: PRINT "* ADD  *"
  498. 10120  PRINT : PRINT "USE THE 'ADD' OPTION TO ENTER DETAIL": PRINT "EXPENSE TRANSACTIONS INTO THE CREDIT": PRINT "CARD AND CHECK FILES."
  499. 10130  VTAB 8: HTAB 13: PRINT "* POST *"
  500. 10150  PRINT : PRINT "USE THE 'POST' OPTION TO REMOVE": PRINT "A DETAIL TRANSACTION FROM ITS": PRINT "ACTIVE FILE AND UPDATE THE YEAR-": PRINT "TO-DATE BALANCES.  NOTE: EACH"
  501. 10160  PRINT "'POSTED' TRANSACTION WILL BE WRITTEN": PRINT "TO AN AUDIT TRAIL FILE FOR FUTURE": PRINT "REFERENCE."
  502. 10170  PRINT : HTAB 13: PRINT "*  *  *"
  503. 10180  PRINT : PRINT "FOR EACH OPTION, FOLLOW THE ": PRINT "INSTRUCTIONS ON THE SCREEN."
  504. 10190  VTAB 24: INVERSE : INPUT "HIT RETURN TO CONTINUE ";X$: NORMAL : POKE 32,0: POKE 33,40
  505. 10200  REM  * ACCEPT OUTPUT DEVICE TYPE
  506. 10210  TEXT : HOME 
  507. 10220  HTAB 8: PRINT "* INITIALIZATION SCREEN *"
  508. 10230  VTAB 3: PRINT "ENTER THE REPORT OUTPUT DEVICE": PRINT "YOU WISH TO USE."
  509. 10240  PRINT : HTAB 10: PRINT "1 = SCREEN ONLY": HTAB 10: PRINT "2 = PRINTER"
  510. 10250  VTAB 10: INVERSE : INPUT "ENTER YOUR SELECTION:";PRTYPE: NORMAL 
  511. 10260  IF PRTYPE <1  OR PRTYPE >2  THEN  GOSUB 280: GOTO 10250
  512. 10270  IF PRTYPE = 2  THEN  PRINT : PRINT "1= CENTRONICS COMPATIBLE": PRINT "2= CENTRONICS 737": PRINT "3= EPSON MX-80 PRINTER": INPUT "ENTER SELECTION ";PQ: IF PQ <1  OR PQ >3  THEN 10270
  513. 10300  REM  * ACCEPT REPORT DATE
  514. 10310  VTAB 20: INVERSE : PRINT "ENTER THE REPORT HEADING DATE: ": NORMAL 
  515. 10320  VTAB 22: CALL  -868: INVERSE : INPUT "IN MO,DAY,YR :";MT,D,Y: NORMAL 
  516. 10330  IF MT >12  OR D >31  THEN  GOSUB 280: GOTO 10320
  517. 10400  REM  * FILL CONSTANT ARRAYS
  518. 10410 D$ = "<CTRL-D>": REM  CTRL-D
  519. 10420  PRINT D$;"NOMON I,O,C"
  520. 10430  DIM N$(24),MO$(13),CD$(5)
  521. 10440  FOR X = 1 TO 24: READ N$(X): NEXT X
  522. 10450  FOR X = 1 TO 12: READ MO$(X): NEXT X
  523. 10460  FOR X = 1 TO 5: READ CD$(X): NEXT X
  524. 10470  DIM BAL(24,12),W$(150,6),W(75,13),TL(12),NM$(24),AV(24),PC(24,3),WK(150,5),CC(5)
  525. 10500  REM  *** MAIN LOOP ***
  526. 10510  CALL  -936
  527. 10530 I = 0
  528. 10540  HTAB 13: PRINT "* MAIN MENU *"
  529. 10550  VTAB 3: PRINT "ENTER THE NUMBER OF THE OPTION YOU WANT": PRINT "TO USE.": HTAB 10: PRINT "1 = ADD RECORDS": HTAB 10: PRINT "2 = POST (DELETE) RECORDS"
  530. 10560  HTAB 10: PRINT "3 = SORT RECORDS ": HTAB 10: PRINT "4 = REPORT/LIST OPTIONS": HTAB 10: PRINT "5 = END THE SESSION"
  531. 10570  VTAB 11: INVERSE : INPUT "ENTER YOUR SELECTION: ";OM: NORMAL 
  532. 10580  GOSUB 270
  533. 10590  IF OM = 5  THEN  PRINT "ALL DONE": END 
  534. 10600  IF OM <1  OR OM >5  THEN  GOSUB 280: GOTO 10570
  535. 10605  IF OM = 4  THEN  GOTO 10660
  536. 10610  VTAB 15: PRINT "ENTER THE NUMBER OF THE FILE TO BE USED."
  537. 10620  HTAB 10: PRINT "1 = CREDIT CARDS": HTAB 10: PRINT "2 = CHECKS"
  538. 10630  VTAB 20: INVERSE : INPUT "ENTER YOUR SELECTION:";FL: NORMAL 
  539. 10635  IF FL < >1  AND FL < >2  THEN  GOSUB 280: GOTO 10630
  540. 10640  IF FL = 1  THEN F$ = "CARD #"
  541. 10650  IF FL = 2  THEN F$ = "CHECK #"
  542. 10660  ON OM GOTO 1000,2000,3000,4000
  543. 11000  DATA  1.  AUTO EXPENSE,2.  BOOKS/MAGS.,3.  BUSINESS EXP,4.  CLOTHES ADULT,5.  CLOTHES KIDS,6.  DONATIONS,7.  ELECTRICITY,8.  ENTERTAINMENT
  544. 11005  DATA  9.  FOOD,10. GIFTS,11. HOBBY-ADULT,12. HOBBY-KIDS,13. HOME-GAS,14. HOME-MAINT',15. INSURANCE,16. INVESTMENTS,17. LIQ/CIG'S,18. MORTGAGE
  545. 11010  DATA  19. TELEPHONE,20. TAX-LOCAL,21. TAX-STATE,22. TAX-FEDERAL,23. VACATION,24. WATER
  546. 11020  DATA  JAN,FEB,MAR,APR,MAY,JUN,JLY,AUG,SEP,OCT,NOV,DEC
  547. 11030  DATA  MASTERCHARGE = $,VISA CARD    = $,AM EXPRESS   = $,GASOLINE     = $,OTHER CARDS  = $